﻿// ***********************************************************************
// Assembly         : Delta_webControl
// Author           : Juan Alberto Cerino Gomez
// Created          : 04-25-2013
//
// Last Modified By : Juan Alberto Cerino Gomez
// Last Modified On : 05-10-2013
// ***********************************************************************
// <copyright file="HLoader.cs" company="Delta Bussines">
//     Copyright (c) 2013  Delta Bussines. All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Delta_util.Clases;
using Delta_entidad.EntidadesControl;
using Delta_control.Base;
using Delta_entidad.Base;

using System.IO;
using System.Reflection;

namespace Delta_webControl.Handlers
{
    /// <summary>
    /// Clase encargada de cargar los user controls, los cuales se usan como paginas web administrativas
    /// </summary>
    public class HLoader : Page
    {
        /// <summary>
        /// Indica si se quiere representar un archivo que se encuentra en una DLL.
        /// </summary>
        protected internal bool esArchivo = false;
        /// <summary>
        /// Indica si la pagina contiene un control script manager.
        /// </summary>
        /// <returns>Valor logico.</returns>
        protected internal bool ExisteScriptManager()
        {

            foreach (Control ctrl in Form.Controls)
            {
                if (ctrl is ScriptManager)
                    return true;

            }
            return false;
        }
        /// <summary>
        /// Handle que se ejecuta al cargar la pagina.
        /// </summary>
        /// <param name="sender">El componente que lo genera.</param>
        /// <param name="e">La <see cref="EventArgs"/> instancia que contiene los datos del evento.</param>
        protected void Page_Load(object sender, EventArgs e)
        {
           
            try
            {

                int enc = Comun.Convertir<int>(Utilerias.ObtenerValorGET(this, "enc"));
                string control_cargar = "";

                if (enc == 0)
                    control_cargar = Utilerias.DesEncriptar(Utilerias.ObtenerValorGET(this, "url"), ConfigProy.claveKey);
                else
                    control_cargar = Utilerias.ObtenerValorGET(this, "url");

                if (control_cargar.StartsWith("METHOD:"))
                {
                    
                    MethodInfo metodo = this.GetType().GetMethod(control_cargar.Replace("METHOD:", ""));
                    if (metodo != null)
                        metodo.Invoke(this, null);
                }
                else
                {
                    string content = String.Empty;
                    if (!ExisteScriptManager())
                        this.Form.Controls.Add(new ScriptManager());
                    object inst = Comun.CrearInstancia(control_cargar);
                    Type tp = inst.GetType();

                    Control userControl = LoadControl(tp, null);
                    Form.Controls.Add(userControl);
                    
                }
            }
            catch (Exception ex)
            {
                if (!esArchivo)
                    Response.Write("No se logro cargar la página:" + Utilerias.getMsgError(ex));
            }
        }

      

    }
}
